home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * $Id: k3btrack.h 619556 2007-01-03 17:38:12Z trueg $
- * Copyright (C) 2003-2007 Sebastian Trueg <trueg@k3b.org>
- *
- * This file is part of the K3b project.
- * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * See the file "COPYING" for the exact licensing terms.
- */
-
-
-
- #ifndef K3BTRACK_H
- #define K3BTRACK_H
-
- #include <qcstring.h>
- #include <qvaluevector.h>
-
- #include <k3bmsf.h>
- #include "k3bdevice_export.h"
-
- namespace K3bDevice
- {
- class LIBK3BDEVICE_EXPORT Track
- {
- friend class Device;
-
- public:
- enum TrackType {
- AUDIO,
- DATA
- };
-
- enum DataMode {
- MODE1,
- MODE2,
- XA_FORM1,
- XA_FORM2,
- DVD,
- UNKNOWN
- };
-
- Track();
- Track( const Track& );
- Track( const K3b::Msf& firstSector,
- const K3b::Msf& lastSector,
- int type,
- int mode = UNKNOWN );
- Track& operator=( const Track& );
-
- int type() const { return m_type; }
-
- /**
- * Invalid for DVDs and Audio CDs
- */
- int mode() const { return m_mode; }
-
- /**
- * Invalid for DVDs
- */
- bool copyPermitted() const { return m_copyPermitted; }
- void setCopyPermitted( bool b ) { m_copyPermitted = b; }
-
- /**
- * Only valid for audio tracks
- */
- bool preEmphasis() const { return m_preEmphasis; }
- void setPreEmphasis( bool b ) { m_preEmphasis = b; }
-
- bool recordedIncremental() const { return m_preEmphasis; }
- bool recordedUninterrupted() const { return !recordedIncremental(); }
-
- const QCString& isrc() const { return m_isrc; }
- void setIsrc( const QCString& s ) { m_isrc = s; }
-
- const K3b::Msf& firstSector() const { return m_firstSector; }
- const K3b::Msf& lastSector() const { return m_lastSector; }
- void setFirstSector( const K3b::Msf& msf ) { m_firstSector = msf; }
- void setLastSector( const K3b::Msf& msf ) { m_lastSector = msf; }
-
- const K3b::Msf& nextWritableAddress() const { return m_nextWritableAddress; }
- const K3b::Msf& freeBlocks() const { return m_freeBlocks; }
-
- K3b::Msf length() const;
-
- /**
- * This takes index0 into account
- */
- K3b::Msf realAudioLength() const;
-
- /**
- * 0 if unknown
- */
- int session() const { return m_session; }
- void setSession( int s ) { m_session = s; }
-
- /**
- * @return number of indices. This does not include index 0.
- */
- int indexCount() const;
-
- /**
- * Returns the index relative to the track's start.
- * If it is zero there is no index0.
- */
- const K3b::Msf& index0() const { return m_index0; }
-
- /**
- * Set the track's index0 value.
- * @param msf offset relative to track start.
- */
- void setIndex0( const K3b::Msf& msf );
-
- /**
- * All indices. Normally this list is empty as indices are rarely used.
- * Starts with index 2 (since index 1 are all other sectors FIXME)
- */
- const QValueVector<K3b::Msf>& indices() const { return m_indices; }
-
- bool operator==( const Track& ) const;
- bool operator!=( const Track& ) const;
-
- private:
- K3b::Msf m_firstSector;
- K3b::Msf m_lastSector;
- K3b::Msf m_index0;
-
- K3b::Msf m_nextWritableAddress;
- K3b::Msf m_freeBlocks;
-
- int m_type;
- int m_mode;
- bool m_copyPermitted;
- bool m_preEmphasis;
-
- int m_session;
-
- QValueVector<K3b::Msf> m_indices;
-
- QCString m_isrc;
- };
- }
-
- typedef K3bDevice::Track K3bTrack;
-
- #endif
-